package cn.itsource.interfacedemo;

/**
 *	接口：
 *		1. 概念：就是一个标准。只要实现了一个接口，重写抽象方法，那么就可以具有该接口的这个功能。比如：阿里支付、微信支付
 *			是一个特殊的抽象类。
 *
 *		2. 语法：
 *				修饰符 interface 接口名{
					字段  全部都是全局常量（默认都有public static final修饰）都用大写字母加上下划线。 	调用方式：接口名.常量
					方法  抽象方法（缺省修饰public abstract）
					构造方法  没有！
					//从1.7开始
					public static 返回值类型 方法名(....){}	//静态方法，调用方式：接口名.方法名(...);
					public default 返回值类型 方法名(....){}	//default方法，调用方式：接口实现类对象名.方法名(...);
				}
				
 *		3. 作用：
 *			 	提高程序的扩展性，因为Java中是单继承，多实现（接口可以实现多个）
 *
 *		4. 使用场景：
 *				一般抽象类是作为业务的基类,其他扩展功能一般就用接口实现。
 *				能用接口实现就要用接口，因为扩展性强，因为单继承多实现
 *
 *		5. 类、接口之间的关系：
 *			类和类是extends
 *			类和接口是implements
 *			接口和接口是extends
 *			
 *			Java中既有继承又有实现怎么用？亲爹在前，干爹在后
				interface A{}
				interface B{}
				interface C extends A,B{}接口之间是多继承
				
				class （abstract） Father{ }父类
				
				class Son extends Father implements A,B,C{
					此处需要覆写Father/A/B/C中的所有的抽象方法
				}
 *		
 *		6. 注意事项：
 *			1. 接口的命名一般是以IXxxx开头，表示这是一个接口
 *			2. 接口的实现类一般是以：接口名Impl	命名，表示这是某个接口的实现类
 *			3. 不能new 接口（）；
			4. 如果接口中只有一个抽象方法，那么该接口就是函数式接口（@FunctionalInterface）将，可以使用lambda表达式
			5. 函数式接口注解可以不写，但是如果接口中只有一个抽象方法还是一个函数式接口。只要超过一个抽象方法，就绝对不是函数式接口
			6. 接口必须被子类通过implements全部实现其内的抽象方法
 */
public interface IUsb3_0 {
	/**充电*/
	public abstract void power();
	
	/**数据传输*/
	void dataTransmission();//这里前面有一个隐式的：public abstract ，可以不写
}
